home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 2: CDPD 1
/
Almathera Ten on Ten - Disc 2: CDPD 1.iso
/
pd
/
201-225
/
214
/
mandelvroom
/
src
/
presets.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-03-13
|
28KB
|
955 lines
/*
* MandelVroom 2.0
*
* (c) Copyright 1987,1989 Kevin L. Clague, San Jose, CA
*
* All rights reserved.
*
* Permission is hereby granted to distribute this program's source
* executable, and documentation for non-comercial purposes, so long as the
* copyright notices are not removed from the sources, executable or
* documentation. This program may not be distributed for a profit without
* the express written consent of the author Kevin L. Clague.
*
* This program is not in the public domain.
*
* Fred Fish is expressly granted permission to distribute this program's
* source and executable as part of the "Fred Fish freely redistributable
* Amiga software library."
*
* Permission is expressly granted for this program and it's source to be
* distributed as part of the Amicus Amiga software disks, and the
* First Amiga User Group's Hot Mix disks.
*
* contents: this file contains the functions to create and initialize
* a preset project selected by the user.
*/
#include "mandp.h"
#define NUMPRESETS 10
extern struct NewScreen NewScreen;
struct Preset {
char *Name;
int Type;
double StartX, StartY, EndX, EndY;
SHORT CountX, CountY;
SHORT MaxCount;
UBYTE MandType;
USHORT ViewModes;
USHORT Depth;
ULONG BorderType;
SHORT *ColorMap;
SHORT NumContours;
USHORT *Contours;
UBYTE *Pens;
};
extern int Num_vp_Colors;
extern struct Preset Preset[];
extern USHORT NewViewModes;
extern UBYTE NewDepth;
DefaultColors()
{
LoadRGB4( vp, Preset[0].ColorMap, Num_vp_Colors );
}
/*
* Generate a preset picture
*/
ClonePict( Pict, Type )
register struct Picture *Pict;
register SHORT Type;
{
register struct Picture *ClonedPict;
struct Picture *NewPict();
extern int Num_vp_Colors;
if ( (ClonedPict = NewPict( Type )) == NULL ) {
ErrNoPict();
return;
}
CopyPict( ClonedPict, Pict );
strcpy(ClonedPict->Title,Pict->Title);
ClonedPict->Flags = 0;
ClonedPict->ZoomType == GENPENDSTATE;
if ( Pict->pNode.ln_Type != Type ) {
if ( Type == JULIAPICT ) {
ClonedPict->Real = Pict->RealLow;
ClonedPict->Imag = Pict->ImagLow;
InitJulia( ClonedPict );
} else {
InitMand( ClonedPict );
}
}
if ( OpenPicture( ClonedPict ) != 0 ) {
ThrowPict( ClonedPict );
}
GetCurPict();
}
ErrNoPict()
{
DispErrMsg( "Can't Allocate Picture.",0);
}
CopyPict( DstPict, SrcPict )
register struct Picture *DstPict;
register struct Picture *SrcPict;
{
movmem( &SrcPict->Real, &DstPict->Real, sizeof(struct Picture)-
((char *) &SrcPict->Real - (char *) SrcPict) );
}
/*
* Generate a preset picture
*/
int
SetPreset(Number)
int Number;
{
return( NewPreset( Number, Preset[Number].Type ));
}
/*
* Generate a preset picture
*/
int
NewPreset(Number, Type)
int Number;
int Type;
{
register struct Picture *Pict;
struct Picture *NewPict();
extern int Num_vp_Colors;
if ( (Pict = NewPict( Type )) == NULL ) {
ErrNoPict();
return(UNSUCCESSFUL);
}
if (Number == -1) {
InitPreset( 0, Pict );
#define VIEW_MODE_MASK (HIRES|INTERLACE|EXTRA_HALFBRITE)
Pict->ViewModes = NewViewModes = screen->ViewPort.Modes & VIEW_MODE_MASK;
Pict->Depth = NewDepth = screen->BitMap.Depth;
if ( OpenPicture( Pict ) != 0 ) {
ThrowPict( Pict );
return(UNSUCCESSFUL);
}
} else {
InitPreset( Number, Pict );
if (MaybeNewScreen() == 0) {
if ( OpenPicture( Pict ) != 0 ) {
ThrowPict( Pict );
return(UNSUCCESSFUL);
} else {
Generate( Pict );
}
}
}
GetCurPict();
if (CurPict)
LoadRGB4( vp, CurPict->RGBs, Num_vp_Colors );
return(SUCCESSFUL);
}
InitJulia( Pict )
register struct Picture *Pict;
{
double JCountX, JCountY;
double AspectRatio();
JCountX = (double) Pict->CountX;
JCountY = (double) Pict->CountY;
Pict->ImagLow = -1.0;
Pict->ImagHigh = 1.0;
Pict->RealLow = Pict->ImagLow * AspectRatio() * JCountX / JCountY;
Pict->RealHigh = -Pict->RealLow;
}
/*
* Set up system from preset list
*/
InitPreset(Number, Pict)
int Number;
register struct Picture *Pict;
{
register LONG i;
register struct Preset *CurPreset;
register SHORT *CurColors;
register USHORT *CurContours;
register UBYTE *CurPens;
register struct Node *pNode = (struct Node *) Pict;
extern USHORT NewViewModes;
extern UBYTE NewDepth;
if (Pict == NULL) {
DispErrMsg("Initing NULL Pict",0);
return(0);
}
if (Number < NUMPRESETS) {
Pict->GenState = GENPENDSTATE;
FreeCounts( Pict );
CurPreset = &Preset[Number];
sprintf(Pict->Title,"* %s",CurPreset->Name);
Pict->CountX = CurPreset->CountX;
Pict->CountY = CurPreset->CountY;
if ( pNode->ln_Type == JULIAPICT ) {
Pict->Real = CurPreset->StartX;
Pict->Imag = CurPreset->StartY;
InitJulia( Pict );
} else {
Pict->RealLow = CurPreset->StartX;
Pict->ImagLow = CurPreset->StartY;
Pict->RealHigh = CurPreset->EndX;
Pict->ImagHigh = CurPreset->EndY;
}
Pict->MaxIteration = CurPreset->MaxCount;
Pict->MathMode = CurPreset->MandType;
Pict->ViewModes = CurPreset->ViewModes;
Pict->Depth = CurPreset->Depth;
if ( Number != 0 ) {
NewViewModes = CurPreset->ViewModes;
NewDepth = CurPreset->Depth;
}
CurColors = CurPreset->ColorMap;
for (i = 0; i < 32; i++) {
Pict->RGBs[i] = *CurColors++;
}
CurContours = CurPreset->Contours;
CurPens = CurPreset->Pens;
for (i = 0; i < CurPreset->NumContours; i++) {
*(Pict->Heights + i) = *CurContours++;
*(Pict->Pens + i) = *CurPens++;
}
for ( ; i < NumContours; i++ ) {
*(Pict->Heights + i) = 0;
*(Pict->Pens + i) = NORMALPEN;
}
MakeColorXlate( Pict );
CalculateGaps( Pict );
return(0);
} else {
DispErrMsg("Invalid Preset",0);
return(1);
}
}
/**************************************************************************
*
* Preset arrays for generating pictures
*
*************************************************************************/
SHORT big_brotPalette[] =
{
0x0000, 0x0b98, 0x0fdc, 0x0765, 0x0114, 0x0225, 0x0337, 0x0448,
0x055a, 0x066b, 0x077c, 0x088e, 0x099f, 0x0bbf, 0x0ccf, 0x0eef,
0x0fff, 0x0eee, 0x0dde, 0x0ccd, 0x0ccd, 0x0bbc, 0x0aab, 0x099b,
0x088a, 0x077a, 0x0669, 0x0558, 0x0558, 0x0447, 0x0337, 0x0226
};
USHORT big_brotHeights[] =
{
128,
29,19, 13, 10, 9, 8, 7, 6,
5, 4, 3, 2, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
UBYTE big_brotPens[] =
{
0, 16, 17, 18, 19, 20, 21, 22,
23, 24, 25, 26, 27, 28, 29, 30,
31, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26,
27, 28, 29, 30, 31, 4, 1, 1,
};
SHORT Hey_BabyPalette[] =
{
0x0000, 0x0b98, 0x0fdc, 0x0765, 0x0c9b, 0x0b6a, 0x0a49, 0x0927,
0x0806, 0x0716, 0x0727, 0x0637, 0x0658, 0x0568, 0x0579, 0x0489,
0x0000, 0x0fff, 0x0dee, 0x0bcd, 0x09bc, 0x06aa, 0x0499, 0x0278,
0x0067, 0x059a, 0x0acc, 0x0fff, 0x0bdd, 0x08bb, 0x0489, 0x0067
};
USHORT Hey_BabyHeights[] =
{
1023, 247, 220, 193, 167, 160, 154, 147,
141, 134, 128, 122, 115, 110, 106, 102,
98, 93, 89, 85, 81, 77, 74, 73,
72, 71, 70, 69, 68, 67, 66, 65
};
UBYTE Hey_BabyPens[] =
{
0, 1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15,
30, 29, 28, 27, 26, 25, 24, 23,
22, 21, 20, 19, 18, 17, 20, 23
};
SHORT coverPalette[] =
{
0x0000, 0x0b98, 0x0fdc, 0x0765, 0x0f58, 0x0f46, 0x0e46, 0x0d35,
0x0c35, 0x0b34, 0x0a33, 0x0923, 0x0822, 0x0611, 0x0511, 0x0400,
0x0fe7, 0x0f9d, 0x0f8c, 0x0f7a, 0x009f, 0x0ade, 0x0cee, 0x009f,
0x03af, 0x05bf, 0x05bd, 0x09de, 0x0ade, 0x0cee, 0x09cd, 0x06bc
};
USHORT coverHeights[] =
{
1023, 111, 106, 96, 86, 76, 75, 74,
73, 72, 71, 70, 69, 68, 67, 66,
65, 64, 62, 61, 60, 59, 58, 57,
48, 47, 46, 45, 42, 39, 36, 35,
34, 33, 32, 31, 30, 29, 28, 27,
26, 25, 24, 23, 22, 21, 20, 19,
18, 17, 16, 15, 14, 13, 12, 11,
10, 14, 13, 12, 11, 10, 9, 8,
3, 0, 0, 0, 0, 0, 0, 0,
};
UBYTE coverPens[] =
{
0, 16, 17, 18, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15,
17, 17, 18, 19, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15,
15, 14, 13, 12, 11, 10, 8, 7,
6, 5, 4, 19, 18, 17, 11, 10,
9, 8, 7, 6, 5, 4, 19, 18,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
};
SHORT sea_horsePalette[] =
{
0x0000, 0x0b98, 0x0fdc, 0x0765, 0x0fff, 0x0bbb, 0x0888, 0x0444,
0x0000, 0x0002, 0x0003, 0x0005, 0x0006, 0x0007, 0x0009, 0x000a,
0x002a, 0x003a, 0x0059, 0x0003, 0x0020, 0x0030, 0x0040, 0x0040,
0x0050, 0x0060, 0x0050, 0x0040, 0x0030, 0x0020, 0x0010, 0x0fff
};
USHORT sea_horseHeights[] =
{
1023, 635, 542, 449, 356, 263, 171, 145,
142, 140, 139, 138, 137, 136, 135, 134,
133, 132, 131, 130, 129, 128, 127, 126,
125, 124, 123, 122, 121, 120, 119, 118,
117, 116, 115, 114, 113, 112, 111, 110,
109, 108, 107, 106, 105, 104, 103, 102,
101, 100, 99, 98, 97, 96, 95, 94,
93, 92, 91, 90, 89, 88, 87, 86,
85, 84, 83, 82, 81, 80, 79, 78,
77, 76, 75, 74, 73, 72, 71, 70,
69, 68, 67, 66, 65, 64, 63, 62,
61, 60, 59, 58, 57, 56, 55, 54,
53, 52, 51, 50, 49, 48, 47, 46,
45, 44, 43, 42, 41, 40, 39, 38,
37, 36, 35, 34, 33, 32, 31, 30,
29, 28, 27, 26, 25, 24, 23, 22,
21, 20, 19, 18, 17, 16, 15, 14,
13, 12, 11, 10, 9, 8, 7, 6,
5, 4, 3, 2, 1, 0, 0, 0,
};
UBYTE sea_horsePens[] =
{
0, 7, 6, 5, 4, 4, 5, 6,
7, 8, 10, 20, 11, 21, 12, 22,
13, 23, 14, 24, 15, 25, 16, 26,
17, 27, 18, 28, 17, 29, 16, 30,
15, 20, 14, 21, 13, 22, 12, 23,
11, 24, 10, 25, 10, 26, 11, 27,
12, 28, 13, 29, 14, 30, 15, 20,
16, 21, 17, 22, 18, 23, 17, 24,
16, 25, 15, 26, 14, 27, 13, 28,
12, 29, 11, 30, 10, 20, 10, 21,
11, 22, 12, 23, 13, 24, 14, 25,
15, 26, 16, 27, 17, 28, 18, 29,
17, 30, 16, 20, 15, 21, 14, 22,
13, 23, 12, 24, 11, 25, 10, 26,
10, 27, 11, 28, 12, 29, 13, 30,
14, 20, 15, 21, 16, 22, 17, 23,
18, 24, 17, 25, 16, 26, 15, 27,
14, 28, 13, 29, 12, 30, 11, 20,
10, 21, 10, 22, 11, 23, 12, 1,
};
SHORT golden_dragonPalette[] =
{
0x0000, 0x0b98, 0x0fdc, 0x0765, 0x0f93, 0x0e83, 0x0c73, 0x0b53,
0x0943, 0x0732, 0x0411, 0x0200, 0x0310, 0x0410, 0x0520, 0x0720,
0x0850, 0x0930, 0x0c80, 0x0fb0, 0x0620, 0x0510, 0x0310, 0x0200,
0x0521, 0x0742, 0x0a63, 0x0c84, 0x0a63, 0x0742, 0x0521, 0x0200
};
USHORT golden_dragonHeights[] =
{
1023, 353, 316, 279, 274, 270, 266, 261,
257, 253, 249, 226, 224, 222, 220, 219,
217, 215, 213, 212, 210, 208, 207, 195,
194, 193, 192, 191, 190, 189, 188, 187,
186, 185, 184, 183, 182, 181, 180, 179,
178, 177, 176, 175, 174, 173, 172, 171,
170, 169, 168, 167, 166, 165, 164, 163,
162, 161, 160, 159, 158, 157, 156, 155,
154, 153, 152, 151, 150, 149, 148, 147,
146, 145, 144, 0, 0, 0, 0, 0,
};
UBYTE golden_dragonPens[] =
{
0, 4, 5, 6, 7, 8, 9, 10,
11, 12, 14, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26,
27, 28, 29, 30, 23, 24, 25, 26,
27, 28, 29, 30, 23, 24, 25, 26,
27, 28, 29, 30, 23, 24, 25, 26,
27, 28, 29, 30, 23, 24, 25, 26,
27, 28, 29, 30, 23, 24, 25, 26,
27, 28, 29, 30, 13, 24, 25, 26,
27, 28, 29, 13, 1, 1, 1, 1,
};
SHORT dual_spiralPalette[] =
{
0x0000, 0x0b98, 0x0fdc, 0x0765, 0x0bbb, 0x0999, 0x0777, 0x0555,
0x0333, 0x0246, 0x0357, 0x0468, 0x0479, 0x058b, 0x068c, 0x079d,
0x0fff, 0x0eee, 0x0ccc, 0x0fd0, 0x0246, 0x0357, 0x0468, 0x079d,
0x068c, 0x068b, 0x057a, 0x057a, 0x0469, 0x0358, 0x0357, 0x0246
};
USHORT dual_spiralHeights[] =
{
1023, 283, 271, 260, 249, 238, 226, 225,
224, 223, 222, 221, 220, 219, 218, 217,
216, 215, 214, 213, 212, 211, 210, 209,
208, 207, 206, 205, 204, 203, 202, 201,
200, 199, 198, 197, 196, 195, 194, 193,
192, 191, 190, 189, 188, 187, 186, 185,
184, 183, 182, 181, 180, 179, 178, 177,
176, 175, 174, 173, 172, 171, 170, 169,
168, 167, 166, 165, 164, 163, 162, 161,
160, 159, 158, 157, 156, 155, 154, 153,
152, 151, 150, 149, 148, 147, 146, 145,
144, 143, 142, 141, 140, 139, 138, 137,
136, 135, 134, 133, 132, 131, 130, 129,
128, 127, 126, 125, 124, 123, 122, 121,
120, 119, 118, 117, 116, 115, 114, 113,
112, 111, 110, 109, 108, 107, 106, 105,
104, 103, 102, 101, 100, 99, 98, 97,
96, 95, 94, 93, 92, 91, 90, 89,
88, 87, 86, 85, 84, 83, 82, 81,
80, 79, 78, 77, 76, 75, 74, 73,
72, 71, 70, 69, 68, 67, 66, 65,
64, 63, 62, 61, 60, 59, 58, 57,
56, 55, 54, 53, 52, 51, 50, 49,
48, 47, 46, 45, 44, 43, 42, 41,
40, 39, 38, 37, 36, 35, 34, 33,
32, 31, 30, 29, 28, 27, 26, 25,
24, 23, 22, 21, 20, 19, 18, 17,
16, 15, 14, 13, 12, 11, 10, 9,
8, 7, 6, 5, 4, 3, 2, 1,
0, 0, 0, 0, 0, 0, 0, 0,
};
UBYTE dual_spiralPens[] =
{
0, 16, 17, 18, 5, 6, 7, 31,
30, 29, 28, 27, 26, 25, 24, 23,
24, 25, 26, 27, 28, 29, 30, 31,
30, 29, 28, 27, 26, 25, 24, 23,
24, 25, 26, 27, 28, 29, 30, 31,
31, 30, 29, 28, 27, 26, 25, 24,
23, 24, 25, 26, 27, 28, 29, 30,
31, 31, 30, 29, 28, 27, 26, 25,
24, 23, 24, 25, 26, 27, 28, 29,
30, 31, 31, 30, 29, 28, 27, 26,
25, 24, 23, 24, 25, 26, 27, 28,
29, 30, 31, 31, 30, 29, 28, 27,
26, 25, 24, 23, 24, 25, 26, 27,
28, 29, 30, 31, 31, 30, 29, 28,
27, 26, 25, 24, 23, 24, 25, 26,
27, 28, 29, 30, 31, 31, 30, 29,
28, 27, 26, 25, 24, 23, 24, 25,
26, 27, 28, 29, 30, 31, 31, 30,
29, 28, 27, 26, 25, 24, 23, 24,
25, 26, 27, 28, 29, 30, 31, 31,
30, 29, 28, 27, 26, 25, 24, 23,
24, 25, 26, 27, 28, 29, 30, 31,
31, 30, 29, 28, 27, 26, 25, 24,
23, 24, 25, 26, 27, 28, 29, 30,
31, 31, 30, 29, 28, 27, 26, 25,
24, 23, 24, 25, 26, 27, 28, 29,
30, 31, 31, 30, 29, 28, 27, 26,
25, 24, 23, 24, 25, 26, 27, 28,
29, 30, 31, 31, 30, 29, 28, 27,
26, 25, 24, 23, 24, 25, 26, 27,
};
SHORT halfbritePalette[] =
{
0x0000, 0x0b98, 0x0fdc, 0x0765, 0x0edd, 0x0dcc, 0x0dcc, 0x0cbb,
0x0cbb, 0x0baa, 0x0baa, 0x0a99, 0x0a99, 0x0988, 0x0988, 0x0877,
0x0445, 0x0fee, 0x0edd, 0x0dcc, 0x0cbb, 0x0a99, 0x0988, 0x0877,
0x0e95, 0x0d84, 0x0d83, 0x0c73, 0x0b62, 0x0a51, 0x0a41, 0x0940
};
USHORT halfbriteHeights[] =
{
1023, 355, 333, 311, 289, 267, 245, 223,
201, 179, 173, 167, 161, 155, 149, 143,
137, 131, 125, 119, 113, 107, 101, 95,
94, 93, 92, 91, 90, 89, 88, 87,
86, 85, 84, 83, 82, 81, 80, 79,
78, 77, 76, 75, 74, 73, 72, 71,
70, 69, 68, 67, 66, 65, 64, 63,
62, 61, 60, 59, 58, 57, 56, 55,
54, 53, 52, 51, 50, 49, 48, 47,
46, 45, 44, 43, 42, 41, 40, 39,
38, 37, 36, 35, 34, 33, 32, 31,
30, 29, 28, 27, 26, 25, 24, 23,
22, 21, 20, 19, 18, 17, 16, 15,
14, 13, 12, 11, 10, 9, 8, 7,
6, 5, 4, 3, 2, 1, 0, 0,
};
UBYTE halfbritePens[] =
{
17, 63, 62, 61, 60, 59, 58, 57,
56, 31, 30, 29, 28, 27, 26, 25,
24, 25, 26, 27, 28, 29, 30, 31,
56, 57, 58, 59, 60, 61, 62, 63,
55, 54, 53, 52, 51, 50, 49, 23,
22, 21, 20, 19, 18, 17, 18, 19,
20, 21, 22, 23, 49, 50, 51, 52,
53, 54, 55, 47, 46, 45, 44, 43,
42, 41, 40, 39, 38, 37, 36, 34,
15, 14, 13, 12, 11, 10, 9, 8,
7, 6, 5, 4, 5, 6, 7, 8,
9, 10, 11, 12, 13, 14, 15, 34,
36, 37, 38, 39, 40, 41, 42, 43,
44, 45, 46, 47, 47, 47, 46, 45,
44, 43, 42, 41, 40, 39, 38, 37,
};
SHORT Valley_GalPalette[] =
{
0x0000, 0x0b98, 0x0fdc, 0x0765, 0x099f, 0x077c, 0x055a, 0x0337,
0x0114, 0x0225, 0x0446, 0x0557, 0x0668, 0x0779, 0x099a, 0x0aab,
0x0bbc, 0x0ccd, 0x0eee, 0x0fff, 0x0eee, 0x0dde, 0x0ccd, 0x0bbc,
0x0aab, 0x099b, 0x077a, 0x0669, 0x0558, 0x0448, 0x0337, 0x0226
};
USHORT Valley_GalHeights[] =
{
1023, 182, 137, 126, 115, 105, 94, 83,
73, 72, 71, 70, 69, 68, 67, 66,
65, 64, 63, 62, 61, 60, 59, 58,
57, 56, 55, 54, 53, 52, 51, 50,
49, 48, 47, 46, 45, 44, 43, 42,
41, 40, 39, 38, 37, 36, 35, 34,
33, 32, 31, 30, 29, 28, 27, 26,
25, 24, 23, 22, 21, 20, 19, 18,
17, 16, 15, 14, 13, 12, 11, 10,
9, 8, 7, 6, 5, 4, 3, 2,
1, 0, 0, 0, 0, 0, 0, 0,
};
UBYTE Valley_GalPens[] =
{
0, 17, 15, 14, 13, 12, 11, 10,
9, 8, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29,
30, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22,
23, 24, 25, 26, 27, 28, 29, 30,
8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 8,
9, 10, 11, 12, 13, 14, 15, 16,
};
SHORT dragon_juliaPalette[] =
{
0x0000, 0x0b98, 0x0fdc, 0x0765, 0x0f60, 0x0f80, 0x0f90, 0x0fb0,
0x0fd0, 0x0ff0, 0x0dd1, 0x0bb2, 0x0993, 0x0884, 0x0665, 0x0446,
0x0227, 0x0008, 0x0207, 0x0406, 0x0605, 0x0804, 0x0903, 0x0b02,
0x0d01, 0x0f00, 0x0f20, 0x0f40, 0x0f50, 0x0f70, 0x0f90, 0x0fb0
};
USHORT dragon_juliaHeights[] =
{
1023, 142, 132, 123, 113, 104, 99, 94,
89, 84, 79, 74, 71, 68, 66, 63,
60, 58, 55, 52, 50, 48, 47, 45,
44, 42, 41, 39, 38, 36, 35, 34,
33, 32, 31, 30, 29, 28, 27, 26,
25, 24, 23, 22, 21, 20, 19, 18,
17, 16, 15, 14, 13, 12, 11, 10,
9, 8, 7, 6, 5, 4, 3, 2,
1, 0, 0, 0, 0, 0, 0, 0,
};
UBYTE dragon_juliaPens[] =
{
0, 26, 27, 28, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31,
9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 9,
10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 1, 1, 1, 1, 1,
};
SHORT haloPalette[] =
{
0x0000, 0x0b98, 0x0fdc, 0x0765, 0x000f, 0x011f, 0x022f, 0x033f,
0x055f, 0x066f, 0x077f, 0x088f, 0x099f, 0x0aaf, 0x0ccf, 0x0ddf,
0x0eef, 0x0fff, 0x0eee, 0x0dde, 0x0ccd, 0x0bbc, 0x0aac, 0x099b,
0x088a, 0x0779, 0x0669, 0x0558, 0x0447, 0x0337, 0x0226, 0x0fff
};
USHORT haloHeights[] =
{
1023, 89, 88, 87, 86, 85, 84, 83,
82, 81, 80, 79, 78, 77, 76, 75,
74, 73, 72, 71, 70, 69, 68, 67,
66, 65, 64, 63, 62, 61, 60, 59,
58, 57, 56, 55, 54, 53, 52, 51,
50, 49, 48, 47, 46, 45, 44, 43,
42, 41, 40, 39, 38, 37, 36, 35,
34, 33, 32, 31, 30, 29, 28, 27,
26, 25, 24, 23, 22, 21, 20, 19,
18, 17, 16, 15, 14, 13, 12, 11,
10, 9, 8, 7, 6, 5, 4, 3,
2, 1, 0, 0, 0, 0, 0, 0,
};
UBYTE haloPens[] =
{
0, 15, 14, 13, 12, 11, 10, 9,
8, 7, 6, 5, 4, 4, 5, 4,
5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 15, 14, 13, 12, 11,
10, 9, 8, 7, 6, 5, 4, 4,
5, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 15, 14, 13,
12, 11, 10, 9, 8, 7, 6, 5,
4, 4, 5, 4, 5, 6, 7, 8,
9, 10, 11, 12, 13, 14, 15, 15,
14, 13, 12, 11, 10, 9, 8, 7,
6, 5, 4, 4, 5, 4, 5, 6,
};
#define NUM_CONTOURS(a) (sizeof(a)/sizeof(USHORT))
struct Preset Preset[] =
{
{
"big_brot", /* Preset Name */
MANDPICT,
-2.000000, -1.204545, /* StartX, StartY */
2.820000, 1.204545, /* EndX, EndY */
109, 78, /* CountX,CountY */
128, /* MaxCount */
0, /* MandType */
0x0000, /* ViewModes */
5, /* Depth */
0, /* Border Type*/
&big_brotPalette[0], /* Palette colors */
32, /* NumContours */
&big_brotHeights[0], /* ContourHeights */
&big_brotPens[0] /* ContourPens */
},
{
"Hey_Baby", /* Preset Name */
MANDPICT,
-0.143523, -1.019072, /* StartX, StartY */
-0.143384, -1.018843, /* EndX, EndY */
96, 65, /* CountX,CountY */
1023, /* MaxCount */
0, /* MandType */
0x0000, /* ViewModes */
5, /* Depth */
0, /* Border Type*/
Hey_BabyPalette, /* Palette colors */
32, /* NumContours */
Hey_BabyHeights, /* ContourHeights */
Hey_BabyPens /* ContourPens */
},
{
"Aug_85_Cover", /* Preset Name */
MANDPICT,
-0.948154, -0.296503, /* StartX, StartY */
-0.888359, -0.232261, /* EndX, EndY */
92, 86, /* CountX,CountY */
1023, /* MaxCount */
0, /* MathMode */
0x0000, /* ViewModes */
5, /* Depth */
0, /* Border Type*/
coverPalette, /* Palette colors */
NUM_CONTOURS( coverHeights ), /* NumContours */
coverHeights, /* ContourHeights */
coverPens /* ContourPens */
},
{
"sea_horse", /* Preset Name */
MANDPICT,
-0.750055, 0.105343, /* StartX, StartY */
-0.742464, 0.113267, /* EndX, EndY */
86, 79, /* CountX,CountY */
1023, /* MaxCount */
0, /* MathMode */
0x0000, /* ViewModes */
5, /* Depth */
0, /* Border Type*/
sea_horsePalette, /* Palette colors */
NUM_CONTOURS( sea_horseHeights ), /* NumContours */
sea_horseHeights, /* ContourHeights */
sea_horsePens /* ContourPens */
},
{
"golden_dragon", /* Preset Name */
MANDPICT,
-0.764140, -0.095187, /* StartX, StartY */
-0.764031, -0.095102, /* EndX, EndY */
117, 87, /* CountX,CountY */
1023, /* MaxCount */
0, /* MathMode */
0x0000, /* ViewModes */
5, /* Depth */
0, /* Border Type*/
golden_dragonPalette, /* Palette colors */
NUM_CONTOURS( golden_dragonHeights ), /* NumContours */
golden_dragonHeights, /* ContourHeights */
golden_dragonPens /* ContourPens */
},
{
"dual_spiral", /* Preset Name */
MANDPICT,
-0.764616, -0.095488, /* StartX, StartY */
-0.764312, -0.094471, /* EndX, EndY */
94, 85, /* CountX,CountY */
1023, /* MaxCount */
0, /* MathMode */
0x0000, /* ViewModes */
5, /* Depth */
0, /* Border Type*/
dual_spiralPalette, /* Palette colors */
NUM_CONTOURS( dual_spiralHeights ), /* NumContours */
dual_spiralHeights, /* ContourHeights */
dual_spiralPens /* ContourPens */
},
{
"halfbrite", /* Preset Name */
MANDPICT,
-0.655231, -0.366674, /* StartX, StartY */
-0.654933, -0.366417, /* EndX, EndY */
103, 84, /* CountX,CountY */
1023, /* MaxCount */
0, /* MathMode */
0x0080, /* ViewModes */
6, /* Depth */
0, /* Border Type*/
halfbritePalette, /* Palette colors */
NUM_CONTOURS( halfbriteHeights ), /* NumContours */
halfbriteHeights, /* ContourHeights */
halfbritePens /* ContourPens */
},
{
"Valley_Gal", /* Preset Name */
JULIAPICT,
-0.760314, -0.135554, /* StartX, StartY */
1.707388, 1.064516, /* EndX, EndY */
133, 77, /* CountX,CountY */
1023, /* MaxCount */
0, /* MathMode */
0x0000, /* ViewModes */
5, /* Depth */
0, /* Border Type*/
Valley_GalPalette, /* Palette colors */
NUM_CONTOURS( Valley_GalHeights ), /* NumContours */
Valley_GalHeights, /* ContourHeights */
Valley_GalPens /* ContourPens */
},
{
"dragon_julia", /* Preset Name */
JULIAPICT,
-0.942986, -0.270764, /* StartX, StartY */
1.288473, 0.974026, /* EndX, EndY */
149, 77, /* CountX,CountY */
1023, /* MaxCount */
0, /* MathMode */
0x0000, /* ViewModes */
5, /* Depth */
0, /* Border Type*/
dragon_juliaPalette, /* Palette colors */
NUM_CONTOURS( dragon_juliaHeights ), /* NumContours */
dragon_juliaHeights, /* ContourHeights */
dragon_juliaPens /* ContourPens */
},
{
"halo", /* Preset Name */
JULIAPICT,
0.263523, 0.000016, /* StartX, StartY */
1.031916, 1.233333, /* EndX, EndY */
79, 77, /* CountX,CountY */
1023, /* MaxCount */
0, /* MathMode */
0x0000, /* ViewModes */
5, /* Depth */
0, /* Border Type*/
haloPalette, /* Palette colors */
NUM_CONTOURS( haloHeights ), /* NumContours */
haloHeights, /* ContourHeights */
haloPens /* ContourPens */
}
};
#define DEVELOPMENT
#ifdef DEVELOPMENT
SavePreset(name,MPict)
char *name;
struct Picture *MPict;
{
register struct Picture *Pict = MPict;
int i;
FILE *SaveFile;
SaveFile = fopen(name,"a");
if (SaveFile != (struct FILE *) NULL) {
fprintf(SaveFile, "SHORT %sPalette[] =\n{\n",name);
for (i = 0; i < 32; i++) {
fprintf(SaveFile, " 0x%04x", GetRGB4(vp->ColorMap, i));
if (i != 31)
fprintf(SaveFile,",");
if (i % 8 == 7)
fprintf(SaveFile, "\n");
}
fprintf(SaveFile, "};\n");
fprintf(SaveFile, "USHORT %sHeights[] =\n{\n",name);
for (i = 0; i < NumContours; i++) {
fprintf(SaveFile, " %d", *(Pict->Heights + i) );
if (i != NumContours - 1) {
fprintf(SaveFile,",");
if (i % 8 == 7)
fprintf(SaveFile, "\n");
}
}
fprintf(SaveFile, "\n};\n");
fprintf(SaveFile, "UBYTE %sPens[] =\n{\n",name);
for (i = 0; i < NumContours; i++) {
fprintf(SaveFile, " %d", *(Pict->Pens + i) );
if (i != NumContours - 1) {
fprintf(SaveFile,",");
if (i % 8 == 7)
fprintf(SaveFile, "\n");
}
}
fprintf(SaveFile, "\n};\n");
fprintf(SaveFile, " {\n");
fprintf(SaveFile, " \"%s\", /* Preset Name */\n", name);
if (Pict->pNode.ln_Type == JULIAPICT) {
fprintf(SaveFile, " %f, %f, /* StartX, StartY */\n",
Pict->Real, Pict->Imag);
} else {
fprintf(SaveFile, " %f, %f, /* StartX, StartY */\n",
Pict->RealLow, Pict->ImagLow);
}
fprintf(SaveFile, " %f, %f, /* EndX, EndY */\n", Pict->RealHigh,
Pict->ImagHigh);
fprintf(SaveFile, " %d, %d, /* CountX,CountY */\n",
Pict->CountX, Pict->CountY);
fprintf(SaveFile, " %d, /* MaxCount */\n", Pict->MaxIteration);
fprintf(SaveFile, " %d, /* MathMode */\n", Pict->MathMode);
fprintf(SaveFile, " 0x%04x, /* ViewModes */\n",
screen->ViewPort.Modes);
fprintf(SaveFile, " %d, /* Depth */\n",
screen->BitMap.Depth);
fprintf(SaveFile, " %d, /* Border Type*/\n", 0);
fprintf(SaveFile, " %sPalette, /* Palette colors */\n",
name);
fprintf(SaveFile, " %d, /* NumContours */\n",
NumContours);
fprintf(SaveFile, " %sHeights, /* ContourHeights */\n", name);
fprintf(SaveFile, " %sPens /* ContourPens */\n", name);
fprintf(SaveFile, " },\n\n\n");
fclose( SaveFile );
}
}
#endif